package com.itheima.leetcode.od.b.array;

import java.util.Collections;
import java.util.TreeSet;
import java.util.stream.Collectors;

/**
 * (C卷,100分)- 英文输入法（Java & JS & Python）
 * <p>
 * 题目描述
 * <p>
 * 主管期望你来实现英文输入法单词联想功能。
 * <p>
 * 需求如下：
 * <p>
 * 依据用户输入的单词前缀，从已输入的英文语句中联想出用户想输入的单词，按字典序输出联想到的单词序列，
 * 如果联想不到，请输出用户输入的单词前缀。
 * 注意：
 * <p>
 * 英文单词联想时，区分大小写
 * 缩略形式如”don’t”，判定为两个单词，”don”和”t”
 * 输出的单词序列，不能有重复单词，且只能是英文单词，不能有标点符号
 * 输入描述
 * 输入为两行。
 * <p>
 * 首行输入一段由英文单词word和标点符号组成的语句str；
 * <p>
 * 接下来一行为一个英文单词前缀pre。
 * <p>
 * 0 < word.length() <= 20
 * 0 < str.length <= 10000
 * 0 < pre <= 20
 * <p>
 * 输出描述
 * <p>
 * 输出符合要求的单词序列或单词前缀，存在多个时，单词之间以单个空格分割
 * <p>
 * 用例
 * <p>
 * 输入	I love you
 * He
 * 输出	He
 * 说明
 * 从用户已输入英文语句”I love you”中提炼出“I”、“love”、“you”三个单词，接下来用户输入“He”，
 * <p>
 * 从已输入信息中无法联想到任何符合要求的单词，因此输出用户输入的单词前缀。
 * <p>
 * 输入
 * The furthest distance in the world, Is not between life and death, But when I stand in front of you, Yet you don't know that I love you.
 * <p>
 * f
 * <p>
 * 输出	front furthest
 * 说明	从用户已输入英文语句”The furthestdistance in the world, Is not between life and death, But when I stand in frontof you, Yet you dont know that I love you.”中提炼出的单词，符合“f”作为前缀的，有“furthest”和“front”，按字典序排序并在单词间添加空格后输出，结果为“front furthest”。
 * <p>
 * 题目解析
 * <p>
 * 简单的逻辑题，应该是主要考察数组去重，数组字典排序，过滤等知识
 */
public class EnglishInput {
    public static void main(String[] args) {
        /*Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        String pre = sc.nextLine();*/

        String str = "I love you";
        String pre = "He";
        System.out.println(getResult(str, pre));
    }

    public static String getResult(String str, String pre) {
        String[] tmp = str.split("[^a-zA-Z]");
        TreeSet<String> cache = new TreeSet<>();
        Collections.addAll(cache, tmp);

        String ans = cache.stream()
                .filter(s -> s.startsWith(pre))
                .collect(Collectors.joining(" "));

        if (ans.length() > 0) {
            return ans;
        } else {
            return pre;
        }
    }
}